-
Notifications
You must be signed in to change notification settings - Fork 508
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Align documentation about HTTPRouteTimeouts.BackendRequest timeout scope #3462
base: main
Are you sure you want to change the base?
Conversation
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: rtribotte The full list of commands accepted by this bot can be found here.
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
Hi @rtribotte. Thanks for your PR. I'm waiting for a kubernetes-sigs member to verify that this patch is reasonable to test. If it is, they should reply with Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
/ok-to-test This seems reasonable, but I'll need to have a think about it in case it counts as a breaking change. |
PR needs rebase. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @rtribotte! The Traefik related changes to the GEP look great, thanks for the corrections. Want to get more feedback on the changes to the timeout definition.
/hold
@@ -347,7 +347,7 @@ type HTTPRouteTimeouts struct { | |||
|
|||
// BackendRequest specifies a timeout for an individual request from the gateway | |||
// to a backend. This covers the time from when the request first starts being | |||
// sent from the gateway to when the full response has been received from the backend. | |||
// sent from the gateway to when the response headers have been received from the backend. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This seems like a significant change, would appreciate some additional reviews on this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
IIUC this breaks Envoy implementations?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, in Envoy implementations, there's no timeout for the end of the request, only the end of the headers. So this would not be possible to fulfill in any Envoy-based implementation.
From the update to the Traefik timeouts, I can see that Traefik doesn't support an end-of-headers timeout, which puts us in a tricky position (and is one of the reasons why this GEP took so long to get done).
Edit: I was looking at the request timeouts, not the response ones, sigh.
I think in this case, the godoc is the correct behavior, and we should be changing the diagram to match the godoc.
(In general, for Gateway API, the godoc is the canonical location for specification things, so if there's a mistake, we fix other things first, as the godoc is part of the stable version).
This field is now Standard and so this is definitely a breaking change that we can't do without an API revision.
Sorry @rtribotte this is exactly the sort of thing I was worried about when I said I needed to do a closer read.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Isn't it the opposite? Envoy can do "end of response" not "end of response headers"
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🤦 Looking at the wrong timeout section. Let me edit my comment.
@robscott: GitHub didn't allow me to request PR reviews from the following users: kate-osborn. Note that only kubernetes-sigs members and repo collaborators can review this PR, and authors cannot review their own PRs. In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
What type of PR is this?
/kind documentation
What this PR does / why we need it:
This PR aligns the
HTTPRouteTimeouts.BackendRequest
timeout documentation.It is stated in the GEP 1742 sequence diagram illustrating the timeouts boundaries that the
HTTPRouteTimeouts.BackendRequest
timeout runs until the responses headers are received:gateway-api/geps/gep-1742/index.md
Lines 358 to 360 in f735045
The documentation for the CRD was mentioning a timeout running until the end of the response, which is not consistent and this PR aims to align expectations.
On the side, in the GEP 1742, the Traefik mermaid sequence diagram is adjusted to reflect more accurately the actual supported timeouts.
Which issue(s) this PR fixes:
Does this PR introduce a user-facing change?: